/**
 * localStorage 模块封装
 */
const storage = {
    /**
     * 存储数据（自动序列化）
     * @param key 参数名称
     * @param value 写入值
     */
    set<T = unknown>(key: string, value: T): void {
        try {
            localStorage.setItem(key, JSON.stringify(value));
        } catch (error) {
            // 可根据需要添加错误处理
            throw new Error('Failed to set item in localStorage: ' + error);
        }
    },

    /**
     * 读取数据（自动反序列化）
     * @param key 参数名称
     * @returns 读取到的值，未找到返回 null
     */
    get<T = unknown>(key: string): T | null {
        const value = localStorage.getItem(key);
        if (value === null) return null;
        try {
            return JSON.parse(value) as T;
        } catch {
            // 如果不是 JSON 格式，直接返回原字符串
            return value as unknown as T;
        }
    },

    /**
     * 删除指定 key
     * @param key 参数名称
     */
    remove(key: string): void {
        localStorage.removeItem(key);
    },

    /**
     * 清空所有 localStorage
     */
    clear(): void {
        localStorage.clear();
    }
};

export default storage;
